// example-advanced.js
import {
  getCommentByPath,
  getAllCommentsWithPaths,
  YamlCommentQueryAdvanced,
} from './yaml-util.js';

const yamlContent = `scripts:
  # ==================== Changeset 工作流 ====================
  v:draft:
    command: pnpm --filter @jtronic/scripts version-draft
    description: 生成 changeset 草稿（默认10条提交）
    category: version
    alias:
      - v:d
    examples:
      - pnpm v:draft # 默认10条
      - pnpm v:draft 20 # 默认20条
      - pnpm v:draft tag # 查看自上个版本标签以来的提交
      - pnpm v:draft --help # 查看帮助`;

console.log('=== 测试路径访问 ===\n');

// 1. 访问 v:draft 的注释
const vDraftComment = getCommentByPath(yamlContent, ['scripts', 'v:draft']);
console.log('v:draft 注释:', vDraftComment);

// 2. 访问 description
const description = getCommentByPath(yamlContent, ['scripts', 'v:draft', 'description']);
console.log('\ndescription:', description);

// 3. 访问 alias 数组的第一项
const alias0 = getCommentByPath(yamlContent, ['scripts', 'v:draft', 'alias', '0']);
console.log('\nalias[0]:', alias0);

// 4. 访问 examples 数组的第一项（带注释）
const example0 = getCommentByPath(yamlContent, ['scripts', 'v:draft', 'examples', '0']);
console.log('\nexamples[0]:', example0);

// 5. 访问 examples 数组的第二项
const example1 = getCommentByPath(yamlContent, ['scripts', 'v:draft', 'examples', '1']);
console.log('\nexamples[1]:', example1);

// 6. 使用高级查询器
console.log('\n=== 使用高级查询器 ===\n');
const query = new YamlCommentQueryAdvanced(yamlContent);

// 获取 v:draft 的结构信息
const structure = query.getStructure(['scripts', 'v:draft']);
console.log('v:draft 结构:', structure);

// 获取所有带注释的节点
console.log('\n=== 所有带注释的节点 ===\n');
const allComments = getAllCommentsWithPaths(yamlContent);
allComments.forEach((item) => {
  if (item.comment || item.commentBefore) {
    console.log(`路径: ${item.pathString}`);
    console.log(`  类型: ${item.type}`);
    console.log(`  注释: ${item.comment || item.commentBefore}`);
    console.log(`  值: ${item.value}\n`);
  }
});

// 查找包含 "默认" 的注释
console.log('=== 查找包含 "默认" 的注释 ===\n');
const defaultComments = query.findByCommentText('默认');
defaultComments.forEach((item) => {
  console.log(`路径: ${item.pathString}`);
  console.log(`  注释: ${item.comment || item.commentBefore}`);
});

// 使用字符串路径（支持数组索引）
console.log('\n=== 使用字符串路径访问 ===\n');
const example2String = getCommentByPath(yamlContent, 'scripts.v:draft.examples[2]', {
  smartParse: true,
});
console.log('examples[2] (字符串路径):', example2String);
